/*
 * ClasePlantilla.cpp
 *
 *  Created on: 21/05/2013
 *      Author: jonathan
 */

#include "PruebaBitStream.h"
#include "../commons/bitstream.h"
#include <iostream>

void PruebaBitStream::after(){

}

void PruebaBitStream::before(){
	this->borrarArchivo("binario1");
	this->borrarArchivo("binario2");
	this->borrarArchivo("binario3");
}

void PruebaBitStream::run(){
	ResultadoTest res ("----------------------PRUEBA BIT STREAM --------------------");
	res.assertTrue(this->escribirOcteto().getResultado(), "Test1");
	res.assertTrue(this->escribir2Octetos().getResultado(), "Test2");
	res.assertTrue(this->escribirMenosOcteto().getResultado(), "Test3");
	res.getResultado();
}

ResultadoTest PruebaBitStream::escribirOcteto(){
	ResultadoTest res("escribirOcteto");
	BitStream bs("binario1", ios_base::out);
	bs.putBit(true);
	bs.putBit(true);
	bs.putBit(false);
	bs.putBit(false);
	bs.putBit(true);
	bs.putBit(true);
	bs.putBit(true);
	bs.putBit(true);
	bs.close();
	bs.open("binario1", ios_base::in);
	res.assertTrue(bs.getBit(), "Fallo lectura bit");
	res.assertTrue(bs.getBit(), "Fallo lectura bit");
	res.assertTrue(!bs.getBit(), "Fallo lectura bit");
	res.assertTrue(!bs.getBit(), "Fallo lectura bit");
	res.assertTrue(bs.getBit(), "Fallo lectura bit");
	res.assertTrue(bs.getBit(), "Fallo lectura bit");
	res.assertTrue(bs.getBit(), "Fallo lectura bit");
	res.assertTrue(bs.getBit(), "Fallo lectura bit");
	return res;
}
ResultadoTest PruebaBitStream::escribirMenosOcteto(){
	ResultadoTest res("escribirMenosOcteto");
	BitStream bs("binario3", ios_base::out);
	bs.putBit(true);
	bs.putBit(true);
	bs.putBit(false);
	bs.putBit(false);
	bs.putBit(true);
	bs.close();
	bs.open("binario3", ios_base::in);
	res.assertTrue(bs.getBit(), "Fallo lectura bit");
	res.assertTrue(bs.getBit(), "Fallo lectura bit");
	res.assertTrue(!bs.getBit(), "Fallo lectura bit");
	res.assertTrue(!bs.getBit(), "Fallo lectura bit");
	res.assertTrue(bs.getBit(), "Fallo lectura bit");
	res.assertTrue(!bs.getBit(), "Fallo lectura bit");
	res.assertTrue(!bs.getBit(), "Fallo lectura bit");
	res.assertTrue(!bs.getBit(), "Fallo lectura bit");
	return res;
}
ResultadoTest PruebaBitStream::escribir2Octetos(){
	ResultadoTest res("escribir2Octetos");
	BitStream bs("binario2", ios_base::out);
	bs.putBit(true);
	bs.putBit(true);
	bs.putBit(false);
	bs.putBit(false);
	bs.putBit(true);
	bs.putBit(true);
	bs.putBit(true);
	bs.putBit(true);
	bs.putBit(true);
	bs.putBit(true);
	bs.putBit(true);
	bs.putBit(true);
	bs.putBit(true);
	bs.putBit(true);
	bs.putBit(false);
	bs.putBit(false);
	bs.close();
	bs.open("binario2", ios_base::in);
	res.assertTrue(bs.getBit(), "Fallo lectura bit");
	res.assertTrue(bs.getBit(), "Fallo lectura bit");
	res.assertTrue(!bs.getBit(), "Fallo lectura bit");
	res.assertTrue(!bs.getBit(), "Fallo lectura bit");
	res.assertTrue(bs.getBit(), "Fallo lectura bit");
	res.assertTrue(bs.getBit(), "Fallo lectura bit");
	res.assertTrue(bs.getBit(), "Fallo lectura bit");
	res.assertTrue(bs.getBit(), "Fallo lectura bit");
	res.assertTrue(bs.getBit(), "Fallo lectura bit");
	res.assertTrue(bs.getBit(), "Fallo lectura bit");
	res.assertTrue(bs.getBit(), "Fallo lectura bit");
	res.assertTrue(bs.getBit(), "Fallo lectura bit");
	res.assertTrue(bs.getBit(), "Fallo lectura bit");
	res.assertTrue(bs.getBit(), "Fallo lectura bit");
	res.assertTrue(!bs.getBit(), "Fallo lectura bit");
	res.assertTrue(!bs.getBit(), "Fallo lectura bit");

	return res;
}
